Package huu.phong.musiconline.sites

Source Code of huu.phong.musiconline.sites.Zing

package huu.phong.musiconline.sites;

import huu.phong.musiconline.model.Format;
import huu.phong.musiconline.model.IAlbum;
import huu.phong.musiconline.model.ISong;
import huu.phong.musiconline.model.ItemCombo;
import huu.phong.musiconline.model.zing.ZingAlbum;
import huu.phong.musiconline.model.zing.ZingAlbumList;
import huu.phong.musiconline.model.zing.ZingLyric;
import huu.phong.musiconline.model.zing.ZingSongList;
import huu.phong.musiconline.utils.Utils;

import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;

public class Zing extends MusicSite{
 
  private static final String DOMAIN_API = "http://api.mp3.zing.vn";
  public static final String DOMAIN_MP3 = "http://mp3.zing.vn";
  public static final String DOMAIN_IMAGE = "http://image.mp3.zdn.vn";
  public static final String KEY = "keycode=dce4479e25d509f546f92857b5816060&fromvn=true";
 
  public static final String URL_SEARCH_SONG = DOMAIN_API + "/api/mobile/search/song?requestdata={\"length\":%1$d,\"start\":%2$d,\"q\":\"%3$s\",\"sort\":\"%4$s\"}&" + KEY;
  public static final String URL_SONG_INFO = DOMAIN_API + "/api/mobile/song/getsonginfo?requestdata={\"id\":\"1073752416\"}&" + KEY;
  public static final String URL_SONG_OF_ALBUM = DOMAIN_API + "/api/mobile/playlist/getsonglist?requestdata={\"length\":%1$d,\"id\":\"%2$s\",\"start\":%3$d}&" + KEY;
  public static final String URL_SONG_OF_ARTIST = DOMAIN_API + "/api/mobile/artist/getvideoofartist?requestdata={\"length\":%1$d,\"id\":\"%2$s\",\"start\":%3$d}&" + KEY;
 
  public static final String URL_SEARCH_ALBUM = DOMAIN_API + "/api/mobile/search/playlist?requestdata={\"length\":%1$d,\"start\":%2$d,\"q\":\"%3$s\",\"sort\":\"%4$s\"}&" + KEY;
  public static final String URL_ALBUM_INFO = DOMAIN_API + "/api/mobile/playlist/getalbuminfo?requestdata={\"id\":\"%1$s\"}&" + KEY;
  public static final String URL_ALBUM_OF_ARTIST = DOMAIN_API + "/api/mobile/artist/getalbumofartist?requestdata={\"length\":%1$d,\"id\":\"%2$s\",\"start\":%3$d}&" + KEY;
 
  public static final String URL_ARTIST_BY_GENRE = DOMAIN_API + "/api/mobile/artist/getartistbygenre?requestdata={\"length\":%1$d,\"id\":%2$d,\"start\":%3$d}&" + KEY;
  public static final String URL_ARTIST_INFO = DOMAIN_API + "/api/mobile/artist/getartistinfo?requestdata={\"id\":\"%1$s\"}&" + KEY;
 
  public static final String TOP_SONG_VN = DOMAIN_API + "/api/mobile/charts/getchartsinfo?requestdata={\"length\":%1$d,\"id\":1,\"start\":%2$d}&" + KEY;
  public static final String URL_LOG = DOMAIN_API + "/api/mobile/log/loglisten?requestdata={\"type\":\"song\",\"id\":\"%1$s\",\"device_id\":\"d33f3e748d4a5e41\"}&" + KEY;
  public static final String ALL_TOP_SONG = DOMAIN_API + "/api/mobile/charts/getchartslist?" + KEY;
  public static final String URL_LYRIC = DOMAIN_API + "/api/mobile/song/getlyrics?requestdata={\"id\":\"%1$s\"}&" + KEY;
 
  public static final String ZING_USER_AGENT = "Dalvik/1.6.0 (Linux; U; Android 4.2.2; sdk Build/JB_MR1.1)";
  public static final String ZING_SONG_USER_AGENT = "stagefright/1.2 (Linux;Android 4.2.2)";
 
  public static ItemCombo[] BYS = new ItemCombo[]{new ItemCombo("Default", ""), new ItemCombo("Title", "&t=title"), new ItemCombo("Artist", "&t=artist"), new ItemCombo("Composer", "&t=composer"), new ItemCombo("Lyric", "&t=lyrics")};
  public static ItemCombo[] FILTERS = new ItemCombo[]{new ItemCombo("Default", ""),new ItemCombo("HQ", "&filter=2"),new ItemCombo("Hit", "&filter=1"),new ItemCombo("Official", "&filter=3"), new ItemCombo("Lyric", "&filter=4")};
 
  private static Zing zing = new Zing();
 
  public static Zing getInstance(){
    return zing;
  }
 
  private Zing() {
    properties.put("User-Agent", ZING_USER_AGENT);
  }

  public List<? extends ISong> getAlbum(String id) throws IOException {
    InputStream in = getInputStream(String.format(URL_SONG_OF_ALBUM, -1, id, 0));
    String response = Utils.streamToString(in);
    System.out.println(response);
    ZingSongList result = gson.fromJson(response, ZingSongList.class);
    return result.getSongs();
  }
 
  public ZingAlbum getAlbumInfo(String id) throws IOException{
    InputStream in = getInputStream(String.format(URL_ALBUM_INFO, id));
    String response = Utils.streamToString(in);
    System.out.println(response);
    ZingAlbum album = gson.fromJson(response, ZingAlbum.class);
    return album;
  }
 
  public List<? extends ISong> searchSong(String value, int page, String filter) throws UnsupportedEncodingException, IOException{
    value = URLEncoder.encode(value, "UTF-8");
    InputStream in = getInputStream(String.format(URL_SEARCH_SONG, numberResult, (page - 1) * numberResult, value, "hot"));
    String response = Utils.streamToString(in);
    ZingSongList result = gson.fromJson(response, ZingSongList.class);
    return result.getSongs();
  }
 
  public List<? extends IAlbum> searchAlbum(String value, int page, String filter) throws IOException{
    value = URLEncoder.encode(value, "UTF-8");
    InputStream in = getInputStream(String.format(URL_SEARCH_ALBUM, numberResult, (page - 1) * numberResult, value, "hot"));
    String response = Utils.streamToString(in);
    System.out.println(response);
    ZingAlbumList result = gson.fromJson(response, ZingAlbumList.class);
    return result.getAlbums();
  }

  public List<String> getLyric(ISong song) throws IOException {
    InputStream in = getInputStream(String.format(URL_LYRIC, song.getId()));
    String response = Utils.streamToString(in);
    System.out.println(response);
    ZingLyric result = gson.fromJson(response, ZingLyric.class);
    return result.getLyric();
  }

  @Override
  public ItemCombo[] getBys() {
    return BYS;
  }

  @Override
  public ItemCombo[] getFilters() {
    return FILTERS;
  }

  @Override
  public Map<Format, String> getLink(String html) throws IOException {
    return null;
  }
}
TOP

Related Classes of huu.phong.musiconline.sites.Zing

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.